package andy.demo.pinyin;

import java.io.UnsupportedEncodingException;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import andy.demo.R;

/**
 * 拼音工具
 * 
 * @author leizhimin 2009-7-15 15:26:21
 */
public class PinyinAct extends Activity  implements OnClickListener{

	private EditText input_chinese_et;
	private Button  first_bt;
	private Button  all_bt;
	private TextView result_tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.pinyin);
		
		input_chinese_et = (EditText)this.findViewById(R.id.input_chinese_et);
		first_bt =(Button) this.findViewById(R.id.to_pinyin_f_btn);
		all_bt =(Button) this.findViewById(R.id.to_pinyin_all_btn);
		result_tv = (TextView)this.findViewById(R.id.result_tv);
		
		first_bt.setOnClickListener(this);
		all_bt.setOnClickListener(this);
		
		
		
		
		

	}
	
	@Override
	public void onClick(View v) {
		
		String chinese = input_chinese_et.getText().toString();
		String result = "";
		
		switch(v.getId()) {
		case R.id.to_pinyin_f_btn:
			
			result = cn2FirstSpell(chinese);
			break;
		case R.id.to_pinyin_all_btn:
			result = cn2Spell(chinese);
			break;
		}
		
		result_tv.setText(result);
		
	}

	/**
	 * 获取汉字串拼音首字母，英文字符不变
	 * 
	 * @param chinese
	 *            汉字串
	 * @return 汉语拼音首字母
	 */
	public static String cn2FirstSpell(String chinese) {
		StringBuffer pybf = new StringBuffer();
		char[] arr = chinese.toCharArray();
		HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
		defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] > 128) {
				try {
					String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i],
							defaultFormat);
//					System.out.println("_t= "  + _t);
//					for (String string : _t) {
//						System.out.println("_t[] =" + string);
//					}
					if (_t != null) {
						pybf.append(_t[0].charAt(0));
					}
				} catch (BadHanyuPinyinOutputFormatCombination e) {
					e.printStackTrace();
				}
			} else {
				pybf.append(arr[i]);
			}
		}
		return pybf.toString().replaceAll("\\W", "").trim();
	}

	/**
	 * 获取汉字串拼音，英文字符不变
	 * 
	 * @param chinese
	 *            汉字串
	 * @return 汉语拼音
	 */
	public static String cn2Spell(String chinese) {
		StringBuffer pybf = new StringBuffer();
		char[] arr = chinese.toCharArray();
		HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
		defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
		defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] > 128) {
				try {
					pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i],
							defaultFormat)[0]).append(" ");
				} catch (BadHanyuPinyinOutputFormatCombination e) {
					e.printStackTrace();
				}
			} else {
				pybf.append(arr[i]).append(" ");
			}
		}
		return pybf.toString();
	}

	public static void main(String[] args) throws UnsupportedEncodingException {
		String x = "嘅囧誰說壞學生來勼髮視頻裆児";
		System.out.println(cn2FirstSpell(x));
		System.out.println(cn2Spell(x));
	}

	
}